﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using BussinessLogicTecnoPez;
using BussinessLogicTecnoPez.Produccion.Enfermedades_y_control_de_estanques;
using Tecnopez.Globals;
using Microsoft.Practices.EnterpriseLibrary.Validation;

public partial class Modules_EnfermedadesControlEstanque_ABMParametrosControl : System.Web.UI.Page
{
    private GridView grdParamtrosControl;
    protected void Page_Load(object sender, EventArgs e)
    {
        grdParamtrosControl = TecnopezDataGRIDABMView1.grdDatosAbmView;
        if (IsPostBack == false)
        {
            SetMode(PageMode.ListMode);
            CargarComboUnidadMedida();
        }

        TPPUnidadMedida.ObjType = typeof(UnidadMedida);

        InicializarValidadores();
        InicializarGrilla();

        cmdEliminar.Attributes.Add("onClick", "return confirm('Esta seguro de eliminar el registro?');");

        GenericMasterPage master = (GenericMasterPage)this.Master;
        master.Imagen = "../Styles/Icons/ic_soporte.gif";
        master.Titulo = "Parámetros de control";
        cargarGrilla();
        _lblError.Text = "";
    }

    private void CargarComboUnidadMedida()
    {
        cboBuscarUnidadMedida.DataTextField = "DESCRIPCION";
        cboBuscarUnidadMedida.DataValueField = "IDUNIDADMEDIDA";
        cboBuscarUnidadMedida.DataSource = UnidadMedida.getManager.GetAll();
        cboBuscarUnidadMedida.DataBind();

        ListItem item = new ListItem();
        item.Text = "Seleccione...";
        item.Value = "-1";

        cboBuscarUnidadMedida.Items.Insert(0, item);
    }

    private void InicializarValidadores()
    {
        PPVDescripcion.SourceTypeName = "BussinessLogicTecnoPez.Produccion.Enfermedades_y_control_de_estanques.ParametroControl";
        PPVDescripcion.ControlToValidate = "txtDescripcion";
        PPVDescripcion.PropertyName = "Descripcion";
        PPVDescripcion.DisplayMode = ValidationSummaryDisplayMode.List;

        PPVUnidadMedida.SourceTypeName = "BussinessLogicTecnoPez.Produccion.Enfermedades_y_control_de_estanques.ParametroControl";
        PPVUnidadMedida.ControlToValidate = "txtDescripcion";
        PPVUnidadMedida.PropertyName = "UnidadMedida";
        PPVUnidadMedida.DisplayMode = ValidationSummaryDisplayMode.List;
    }

    private void cargarGrilla()
    {
        ParametroControl.getManager.ClearFilters();
        ParametroControl.getManager.ClearOrders();
        ParametroControl.getManager.AddFilter("DESCRIPCION", GenericManager<ParametroControl>.filterOperator.Like, "%" + txtBuscarDescripcion.Text.Trim() + "%");
        if (cboBuscarUnidadMedida.SelectedValue != "-1")
        {
            ParametroControl.getManager.AddFilter("UNIDADMEDIDA", GenericManager<ParametroControl>.filterOperator.Equals, cboBuscarUnidadMedida.SelectedValue);
        }

        if (ViewState["orden"] == null)
        {
            ParametroControl.getManager.AddOrder("IDPARAMETROCONTROL", GenericManager<ParametroControl>.Order.orderDirection.DESC);
        }
        else
        {
            ParametroControl.getManager.AddOrder(ViewState["orden"].ToString(), (GenericManager<ParametroControl>.Order.orderDirection)ViewState["ordenDireccion"]);

        }

        List<ParametroControl> lista = new List<ParametroControl>();
        lista = ParametroControl.getManager.GetFilter();
        grdParamtrosControl.DataSource = lista;
        grdParamtrosControl.DataBind();
    }

    private void seleccionarParametroControl(int o)
    {
        cargarGrilla();
        int IdParametroControl = int.Parse(grdParamtrosControl.DataKeys[o].Value.ToString());
        ParametroControl.getManager.ClearFilters();
        ParametroControl.getManager.AddFilter("IdParametroControl", BussinessLogicTecnoPez.GenericManager<ParametroControl>.filterOperator.Equals, IdParametroControl);
        ParametroControl auxParametroControl = ParametroControl.getManager.GetOne();
        txtID.Text = auxParametroControl.IdParametroControl.ToString();
        txtDescripcion.Text = auxParametroControl.Descripcion.Trim();
        txtFrecuencia.Text = auxParametroControl.Frecuencia.ToString();
        TPPUnidadMedida.ItemSelected = auxParametroControl.UnidadMedida;
        SetMode(PageMode.ViewMode);
    }

    private void SetMode(PageMode mode)
    {
        // System.Threading.Thread.Sleep(1000);
        ViewState["PageMode"] = mode;
        switch (mode)
        {
            case PageMode.ListMode:
                grdParamtrosControl.Enabled = true;
                cmdBuscar.Enabled = true;
                cmdNuevo.Enabled = true;
                wzrABM.ActiveStepIndex = 0;
                break;
            case PageMode.NewMode:
                grdParamtrosControl.Enabled = false;
                cmdBuscar.Enabled = false;
                cmdNuevo.Enabled = false;
                wzrABM.ActiveStepIndex = 1;
                txtID.Enabled = false;
                TPPUnidadMedida.Enable = true;
                txtDescripcion.Enabled = true;
                txtFrecuencia.Enabled = true;
                cmdAceptar.Visible = true;
                cmdCancelar.Enabled = true;
                cmdEditar.Enabled = false;
                cmdEliminar.Enabled = false;
                break;
            case PageMode.EditMode:
                grdParamtrosControl.Enabled = false;
                cmdBuscar.Enabled = false;
                cmdNuevo.Enabled = false;
                wzrABM.ActiveStepIndex = 1;
                txtID.Enabled = false;
                TPPUnidadMedida.Enable = true;
                txtDescripcion.Enabled = true;
                txtFrecuencia.Enabled = true;
                cmdAceptar.Visible = true;
                cmdCancelar.Enabled = true;
                cmdEditar.Enabled = false;
                cmdEliminar.Enabled = false;
                break;
            case PageMode.ViewMode:
                grdParamtrosControl.Enabled = false;
                cmdBuscar.Enabled = false;
                cmdNuevo.Enabled = false;
                wzrABM.ActiveStepIndex = 1;
                txtID.Enabled = false;
                txtID.ForeColor = System.Drawing.Color.Black;
                TPPUnidadMedida.Enable = false;
                txtDescripcion.Enabled = false;
                txtFrecuencia.Enabled = false;
                txtDescripcion.ForeColor = System.Drawing.Color.Black;
                txtFrecuencia.ForeColor = System.Drawing.Color.Black;
                cmdAceptar.Visible = false;
                cmdCancelar.Enabled = true;
                cmdEditar.Enabled = true;
                cmdEliminar.Enabled = true;
                break;
        }

    }

    protected void cmdEditar_Click(object sender, EventArgs e)
    {
        SetMode(PageMode.EditMode);
        cargarGrilla();
    }

    protected void cmdEliminar_Click(object sender, EventArgs e)
    {
        ParametroControl auxParametroControl = new ParametroControl();
        auxParametroControl.IdParametroControl = int.Parse(txtID.Text.Trim());
        int res = ParametroControl.getManager.Delete(auxParametroControl);
        cargarGrilla();
        SetMode(PageMode.ListMode);
    }

    protected void cmdNuevo_Click(object sender, EventArgs e)
    {
        txtID.Text = "";
        txtDescripcion.Text = "";
        txtFrecuencia.Text = "";
        TPPUnidadMedida.ItemSelected = null;
        SetMode(PageMode.NewMode);
    }

    protected void cmdAceptar_Click(object sender, EventArgs e)
    {
        try
        {
            ParametroControl auxParametroControl = new ParametroControl();
            auxParametroControl.Descripcion = txtDescripcion.Text.Trim();
            auxParametroControl.UnidadMedida = (UnidadMedida) TPPUnidadMedida.ItemSelected;
            if (txtFrecuencia.Text != "")
            {
                auxParametroControl.Frecuencia = int.Parse(txtFrecuencia.Text);
            }
            else
            {
                auxParametroControl.Frecuencia = 0;
            }
            if (validar(auxParametroControl))
            {
                if (getMode() == PageMode.NewMode)
                {
                    if (ParametroControl.getManager.Insert(auxParametroControl) != true)
                    {
                        throw ParametroControl.getManager.GeneratedException;
                    }
                    SetMode(PageMode.ListMode);
                }
                else
                {
                    auxParametroControl.IdParametroControl = int.Parse(txtID.Text.ToUpper().Trim());
                    if (ParametroControl.getManager.Update(auxParametroControl) != true)
                    {
                        throw ParametroControl.getManager.GeneratedException;
                    }
                    SetMode(PageMode.ViewMode);
                }
            }
            cargarGrilla();
        }
        catch (Exception exc)
        {
            _lblError.Text = "error: No se pudo realizar la operación";
            Functions.LogError(exc);
            SetMode(PageMode.NewMode);
        }
    }

    protected void cmdCancelar_Click(object sender, EventArgs e)
    {
        SetMode(PageMode.ListMode);
    }

    private void InicializarGrilla()
    {
        TecnopezDataGRIDABMView1.setupGrid<ParametroControl>(cargarGrilla, seleccionarParametroControl, null, true, ViewState);

    }

    private bool validar(ParametroControl objeto)
    {
        ValidationResults v = Validation.Validate<ParametroControl>(objeto);
        if (!v.IsValid)
        {
            _lblError.Text = "Error en el formulario: Por favor verifique los campos ingresados.";
        }
        return v.IsValid;

    }

    private PageMode getMode()
    {
        if (ViewState["PageMode"] == null)
            return PageMode.ModeNotFound;
        return (PageMode)ViewState["PageMode"];
    }


    protected void PPVUnidadMedida_ValueConvert(object sender, Microsoft.Practices.EnterpriseLibrary.Validation.Integration.AspNet.ValueConvertEventArgs e)
    {
        if (TPPUnidadMedida.ItemSelected == null)
        {
            e.ConvertedValue = null;
        }
        else
        {
            e.ConvertedValue = TPPUnidadMedida.ItemSelected.ToString();
        }
    }
}
